# -*- coding: utf-8 -*-
"""
Created on Mon Aug 21 06:51:47 2023

@author: skunk69
"""

import json

chinese_name = u'中文Frost多维度完美主义问卷'
english_name = 'the Chinese Frost Multidimensional Perfectionism Scale'
abbreviation = 'CFMPS'
category = u'人生价值、态度量表'

outline = u"""中文Frost多维度完美主义问卷(the Chinese frost multidimensional perfec-tionism scale,CFMPS)的英文原版由Frost编制，测量完美主义者的典型认知、情绪和行为表现。訾非和周旭在修订中参考了香港大学Cheng的译本，根据大陆的中文语言习惯进行了修改，于2006年完成信效度检验。"""

instruction = u"""这是一份测量完善主义的问卷，请仔细阅读，并在问后面最符合你观点的等级。回答没有正确和错误之分，因此尽量不要选择“不能确定”，也不要花过多的时间思考。  """

with open('CFMPS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = []
scales = [u'担心错误(CM)',u'条理性(OR)',u'父母期望(PE)',u'个人标准(PS)',u'行动的疑虑(DA)']
scales_items = [
    [6,9,10,15,16,18],# 担心错误
    [2,4,5,20,22,24],# 条理性(OR)
    [1,7,14,19,27],# 父母期望(PE)
    [3,8,12,13,17,23],# 个人标准(PS)
    [11,21,25,26],# 行动的疑虑(DA)
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,28)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [u'不符合',u'有点不符合',u'不能确定',u'有点符合',u'符合']
score_rules = list(range(1,6))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《中文Frost多维度完美主义问卷》属于一个自评量表。"""

reliability = u"""问卷修订所用被试从5所大学的本科一、二年级学生中选取，其中1000名被试(男生536人，女生464人)的数据用于探索性因素分析，另外280名被试(男生157人，女生123人)的数据用于验证性因素分析。另有90名被试参加了间隔4周后的重测，以获取重测信度。1280名被试的年龄为19±1.5岁。
CFMPS 5个维度(CM、OR、PE、PS和DA)的内部一致性系数(Cronbach α)分别为0.76，0.81，0.74，0.70和0.64，重测信度为0.82，0.63，0.75，0.78和0.79。"""
validity = u"""对1000个被试的数据进行探索性因素分析，采用主成分法获得8个特征值大于1的因子，共解释总方差的51.3%。结合碎石图，发现抽取5个因子时问卷结构和条目的分布最为合理。删除负荷低于0.40的条目以及在2个或2个以上的因子上负荷都超过0.40的条目。最后确定CFMPS由5个因子、27个条目组成，比其原始问卷少8个条目和1个因素。
在结构效度方面，对这27个条目再进行主成分分析，五因素可以解释总方差的53.7%。对另外280名大学生的数据采用Lisrel8.20进行验证性因素分析，以验证5因素、27项目模型的合理性。模型有较为满意的拟合指数。卡方值与自由度之比(x2/df)为1.44，小于2。拟合优度指数(GFI)为0.89，Bentler比较拟合指数(CFI)为0.93，增值拟合指数(IFI)为0.93，都在0.90左右。近似误差均方根(RMSEA)为0.043(P＜0.05)。
在效标效度方面，CFMPS的5个维度与焦虑、抑郁、强迫等几种心理困扰都存在相关。“担心错误”(CM)和“行动的疑虑"(DA)与心理困扰的关系最为密切。CM与DA与SCL-90强迫症状的相关程度很高，暗示着完美主义与强迫存在更为密切的联系。以上这些相关与CFMPS英文原版的研究结果相似。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""《中文Frost多维度完美主义问卷》包括担心错误(CM)、条理性(OR)、父母期望(PE)、个人标准(PS)和行动的疑虑(DA)5个维度。
（1）担心错误，反映完美主义者害怕失败、在工作和学习过程中对局部和细小的错误过分担心的心理。
（2）条理性，反映完美主义者对条理和整洁的追求。
（3）父母期望，反映完美主义者所感知的父母对自己的过高期望。
（4）个人标准，反映个体为自己制定极高的、不切实际的标准和目标,对自己的工作/学习成绩有过高的期望。
（5）行动的疑虑，测量完美主义者在工作/学习中因担心不完美而表现出的迟疑和怀疑态度。
本问卷没有反向计分题，总分及各维度分为条目分之和。
根据Parker等人以及訾非和周旭的研究，在FMPS中，“担心错误”(CM)、“行动的疑虑”(DA)、“个人标准”(PS)和“父母期望”(PE)4个维度可归为消极完美主义，而“条理性”属于积极完美主义，分析结果的时候最好分开计算分数。
作者认为：当消极完美主义的4个维度总分＞=77分(累积百分比为95%)时，提示被测者为消极完美主义者，并有可能为心理问题所困扰；当总分＞69分但小于77分(累积百分比85%-95%)，提示被测者有消极完美主义倾向。"""

applications = u"""1280个样本的大学生人群中，CFMPS的总分均值为80.5，标准差为13.3；4个消极完美主义维度（CM、PE、PS、DA）总分的均值为56.1，标准差为12.4；各维度（CM、OR、PE、PS、DA）的均值分别为11.5，24.4，13.6，18.7，12.2，标准差分别为4.9、4.8、5.1、5.2、3.8。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)